package com.sh.data.engine.repository.dao.datadev;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sh.data.engine.repository.dao.datadev.entity.FlinkNodeConfigEntity;

public interface FlinkNodeConfigMapper extends BaseMapper<FlinkNodeConfigEntity> {

    //  @Autowired MongoPageHelper mongoPageHelper;
    //
    //  public FlinkNodeConfigEntity getActiveResourceByNodeId(String nodeId) {
    //    Query query = new Query();
    //    Criteria criteria =
    //        Criteria.where("nodeId")
    //            .is(nodeId)
    //            //            .and("nodeType")
    //            //            .is(FlinkNodeTypeEnum.RESOURCE.getNodeType())
    //            .and("active")
    //            .is(true);
    //    query.addCriteria(criteria).limit(1);
    //    FlinkNodeConfigEntity nodeConfigEntity = this.findOne(query);
    //    return nodeConfigEntity;
    //  }
    //
    //  public List<FlinkNodeConfigEntity> getActiveResourceByProjectId(String projectId) {
    //    Query query = new Query();
    //    Criteria criteria =
    //        Criteria.where("projectId")
    //            .is(projectId)
    //            .and("nodeType")
    //            .is(FlinkNodeTypeEnum.RESOURCE.getCode())
    //            .and("active")
    //            .is(true);
    //    query.addCriteria(criteria);
    //    List<FlinkNodeConfigEntity> resources = this.findMulti(query);
    //    return resources;
    //  }
    //
    //  public List<FlinkNodeConfigEntity> getConfigByNodeId(String nodeId) {
    //    Query query = new Query();
    //    Criteria criteria = Criteria.where("nodeId").is(nodeId);
    //    query.addCriteria(criteria);
    //    List<FlinkNodeConfigEntity> multi = this.findMulti(query);
    //    return multi;
    //  }
    //
    //  public PageResult<FlinkNodeConfigEntity> getConfigPage(
    //      Integer pageNum, Integer pageSize, String nodeId) {
    //    Query query = new Query();
    //    if (StringUtils.isNotBlank(nodeId)) {
    //      query.addCriteria(Criteria.where("nodeId").is(nodeId));
    //    }
    //    final Sort sort = Sort.by(Sort.Direction.DESC, "createTime");
    //    query.with(sort);
    //    MongoPageHelper pageHelper = new MongoPageHelper(mongoTemplate);
    //    PageResult<FlinkNodeConfigEntity> nodeConfigPage =
    //        pageHelper.pageQuery(query, FlinkNodeConfigEntity.class, pageSize, pageNum);
    //    return nodeConfigPage;
    //  }
    //
    //  public void deleteByNodeId(String nodeId) {
    //    Query query = new Query();
    //    query.addCriteria(Criteria.where("nodeId").is(nodeId));
    //    remove(query);
    //  }
    //
    //  public List<FlinkNodeConfigEntity> getRunnableTaskList(FlinkNodeTypeEnum flinkNodeTypeEnum) {
    //    Date now = new Date();
    //    Query query = new Query();
    //    // fixme 验证
    //    query.addCriteria(
    //        Criteria.where("nodeType")
    //            .is(flinkNodeTypeEnum.getCode())
    //            .and("published")
    //            .is(true)
    //            .and("active")
    //            .is(true)
    //            .orOperator(
    //                Criteria.where("nextExecTime").lte(now).and("nextStopTime").gte(now),
    //
    // Criteria.where("scheduleConfig").is(null),Criteria.where("scheduleConfig").is(StringUtils.EMPTY)));
    //    return findMulti(query);
    //  }
    //
    //  public List<FlinkNodeConfigEntity> getAllTaskList(FlinkNodeTypeEnum flinkNodeTypeEnum) {
    //    Query query = new Query();
    //    query.addCriteria(
    //        Criteria.where("nodeType")
    //            .is(flinkNodeTypeEnum.getCode())
    //            .and("published")
    //            .is(true)
    //            .and("active")
    //            .is(true));
    //    return findMulti(query);
    //  }
    //
    //  public List<FlinkNodeConfigEntity> getStopedTaskList(FlinkNodeTypeEnum flinkNodeTypeEnum) {
    //    Query query = new Query();
    //    query.addCriteria(
    //        Criteria.where("nodeType")
    //            .is(flinkNodeTypeEnum.getCode())
    //            .and("published")
    //            .is(true)
    //            .and("active")
    //            .is(true)
    //            .and("nextStopTime")
    //            .lte(new Date()));
    //    return findMulti(query);
    //  }
    //
    //  public PageResult<FlinkNodeConfigEntity> getVersionsTaskList(
    //      FlinkNodeTypeEnum flinkNodeTypeEnum, String nodeId, Integer pageNum, Integer pageSize) {
    //    Query query = new Query();
    //    query.addCriteria(
    //        Criteria.where("published")
    //            .is(true)
    //            .and("active")
    //            .is(false)
    //            .and("nodeId")
    //            .is(nodeId));
    //    query.with(Sort.by(Sort.Direction.DESC, "publishTime"));
    //    PageResult<FlinkNodeConfigEntity> result =
    //        mongoPageHelper.pageQuery(query, FlinkNodeConfigEntity.class, pageSize, pageNum);
    //    return result;
    //  }
    //
    //  public void rollbackVersion(
    //      FlinkNodeTypeEnum flinkNodeTypeEnum, String nodeId, String versionId) {
    //    Query query = new Query();
    //    query.addCriteria(
    //        Criteria.where("nodeId")
    //            .is(nodeId)
    //            .and("active")
    //            .is(true));
    //    Update update = new Update();
    //    update.set("active", false);
    //    update.set("updateTime", new Date());
    //    update(query, update);
    //    FlinkNodeConfigEntity entity = new FlinkNodeConfigEntity();
    //    entity.setId(versionId);
    //    entity.setActive(true);
    //    entity.setUpdateTime(new Date());
    //    this.updateByIdSelective(entity);
    //  }
    //
    //  public List<FlinkNodeConfigEntity> getByNodeIds(List<String> nodeIds){
    //    Query query = new Query();
    //    query.addCriteria(Criteria.where("active").is(true).and("nodeId").in(nodeIds));
    //    return findMulti(query);
    //  }
}
